<?php
App::uses('AppController', 'Controller');
/**
 * Utilisateurs Controller
 *
 * @property Utilisateur $Utilisateur
 */
class UtilisateursController extends AppController {

 /**
	* afficher_connexion method
	*
	* @return void
	*/
	public function connexion() {
		if($this->request->is('get')) {
			
		}
		else if($this->request->is('post')) {
			$login = $this->data['utilisateurs']['login'];
			$password = $this->data['utilisateurs']['password'];
			
			$user = $this->Utilisateur->find('first', array('conditions' => array('Utilisateur.login' => $login, 'Utilisateur.password' => md5($password))));
			
			if($user == false) {
				$this->set('erreur', 'Login ou mot de passe incorrect.');
			}
			else {
				$this->Session->write('utilisateur.nom', $user['Utilisateur']['nom_utilisateur']);
				$this->Session->write('utilisateur.id', $user['Utilisateur']['id_utilisateur']);
				$this->Session->write('utilisateur.estAdmin', $user['Utilisateur']['role_admin'] == 1);
			}
			
			$this->set('connecter', $user != false);
		}
		if($this->Session->read('utilisateur') != null) $this->redirect('/');
	}
	
	public function deconnexion() {
		$this->Session->destroy();
		$this->Session->delete('utilisateur');
		$this->redirect('/utilisateurs/connexion');
	}

/**
 * admin_index method
 *
 * @return void
 */
	public function admin_index() {
		$this->Utilisateur->recursive = 0;
		$this->set('utilisateurs', $this->paginate());
	}

/**
 * admin_view method
 *
 * @param string $id
 * @return void
 */
	public function admin_view($id = null)
	{
		$this->Utilisateur->id = $id;
		if (!$this->Utilisateur->exists())
		{
			throw new NotFoundException(__('Utilisateur invalide'));
		}
		$this->set('utilisateur', $this->Utilisateur->read(null, $id));
	}

/**
 * admin_add method
 *
 * @return void
 */
	public function admin_add() {
		if ($this->request->is('post')) {
			$this->Utilisateur->create();
			if(!empty($this->request->data['Utilisateur']['password']))		 // md5() = qqchose, du coup le mot de passe pouvait être vide ...
								$this->request->data['Utilisateur']['password'] = md5($this->request->data['Utilisateur']['password']);
			if ($this->Utilisateur->save($this->request->data)) {
				$this->Session->setFlash(__('L\'utilisateur à bien été enregistré.'), 'flash_success');
				$this->redirect(array('action' => 'index'));
			} else {
								$this->request->data['Utilisateur']['password'] = "";
				$this->Session->setFlash(__('Cet utilisateur n\'a pas pu être enregistré. Merci de réessayer.'));
			}
		}
	}

/**
 * admin_edit method
 *
 * @param string $id
 * @return void
 */
	public function admin_edit($id = null) {
		$this->Utilisateur->id = $id;
		if (!$this->Utilisateur->exists()) {
			throw new NotFoundException(__('Utilisateur invalide'));
		}
		if ($this->request->is('post') || $this->request->is('put')) {
			$this->request->data['Utilisateur']['password'] = md5($this->request->data['Utilisateur']['password']);
			if ($this->Utilisateur->save($this->request->data)) {
				$this->Session->setFlash(__('Le compte utilisateur a été modifié'), 'flash_success');
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('Erreur lors de la modification du compte utilisateur. Merci de réessayer.'));
			}
		} else {
			$this->request->data = $this->Utilisateur->read(null, $id);
			$this->request->data['Utilisateur']['password'] = '';
		}
	}
		/*
		 * Fonction pour modifier le pass de l'utilisateur
		 */
	public function modifier_compte() {
		// on spécifie l'id de l'utilisateur par celui qui est connécté
		$this->Utilisateur->id = $this->Session->read('utilisateur.id');
		// on test que cet utilisateur existe bien
		if (!$this->Utilisateur->exists()) {
			throw new NotFoundException(__('Utilisateur invalide'));
		}
		// si c'est un envoie de formulaire
		if ($this->request->is('post') || $this->request->is('put')) {
			// on ne traite le mot de passe que si il n'est pas vide
			if($this->request->data['Utilisateur']['password'] != '') {
				$this->request->data['Utilisateur']['password'] = md5($this->request->data['Utilisateur']['password']);
			}
			// sinon, on défait le mot de passe
			else {
				unset($this->request->data['Utilisateur']['password']);
			}
			// on passe a l'étape d'enregistrement
			if ($this->Utilisateur->save($this->request->data)) {
				$this->Session->setFlash(__('Vos informations ont bien été prises en compte.'), 'flash_success');
				$this->redirect(array('action' => 'modifier_compte', $id));
			} else {
				$this->Session->setFlash(__('Echec lors de la modification du mot de passe. Merci de réessayer.'));
			}
		}
		// sinon, c'est un simple accès a la page
		else {
			$this->request->data = $this->Utilisateur->read(null, $this->Session->read('utilisateur.id'));
			$this->request->data['Utilisateur']['password'] = '';
		}
	}

/**
 * admin_delete method
 *
 * @param string $id
 * @return void
 */
	public function admin_delete($id = null) {
		if (!$this->request->is('post')) {
			throw new MethodNotAllowedException();
		}
		$this->Utilisateur->id = $id;
		if (!$this->Utilisateur->exists()) {
			throw new NotFoundException(__('Utilisateur invalide'));
		}
		if ($this->Utilisateur->delete()) {
			$this->Session->setFlash(__('L\'utilisateur a bien été supprimé'), 'flash_success');
			$this->redirect(array('action' => 'index'));
		}
		$this->Session->setFlash(__('Erreur - L\'utilisateur n\'a pas été supprimé.'));
		$this->redirect(array('action' => 'index'));
	}
}
